package com.itheima.utils;

import io.jsonwebtoken.Claims;
import io.jsonwebtoken.Jwts;
import io.jsonwebtoken.SignatureAlgorithm;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.Map;
@Component
public class JwtUtils {

    private static final String SECRET_KEY = "aXRoZWltYQ==";
    private static final Integer EXPIRATION_TIME = 12*60*60*1000;

    // 生成Token方法（已有）
    public static String generateToken(Map<String,Object> claims){
        return Jwts.builder()
                .signWith(SignatureAlgorithm.HS256,SECRET_KEY)
                .addClaims(claims)
                .setExpiration(new Date(System.currentTimeMillis()+EXPIRATION_TIME))
                .compact();
    }

    // 解析Token方法（已有）
    public static Claims parseToken(String token)throws Exception {
        return Jwts.parser()
                .setSigningKey(SECRET_KEY)
                .parseClaimsJws(token)
                .getBody();
    }

    // 获取Token中的用户ID
    public static Integer getUserId(String token) {
        try {
            Claims claims = parseToken(token);
            return Integer.valueOf(claims.get("id").toString());
        } catch (Exception e) {
            return null;
        }
    }

    // 获取Token中的用户名
    public static String getUsername(String token) {
        try {
            Claims claims = parseToken(token);
            return claims.get("username").toString();
        } catch (Exception e) {
            return null;
        }
    }

    // 获取Token中的其他用户信息（示例：姓名）
    public static String getName(String token) {
        try {
            Claims claims = parseToken(token);
            return claims.get("name").toString();
        } catch (Exception e) {
            return null;
        }
    }

    // 检查Token是否过期
    public static boolean isTokenExpired(String token) {
        try {
            Claims claims = parseToken(token);
            return claims.getExpiration().before(new Date());
        } catch (Exception e) {
            return true; // 解析异常时认为Token已过期
        }
    }
}